Software-Defined Networks (SDNs) offer programmability and evolvability by separating control and data planes of computer networks. SDNs are often realized by adopting devices that support a standardized application programming interface (API) such as OpenFlow for programming network behavior in the data plane through external software. Applications specify packet forwarding intent, and a controller utilizes the packet forwarding intent to program the network state (e.g., including information regarding a current condition of the network, connectivity/topology, and active traffic flows) in a data plane device's flow table.
Many control plane programs utilize network state to provide services. For example, conflict detection systems replicate flow states on the controller or on external systems to monitor and process network state modifications for potential conflicts with existing network state. The absence of state information as part of the framework leads to a redundancy due to the existence of multiple local copies created by various applications.
State inconsistencies can arise without mechanisms to support concurrency when multiple coexisting authors edit shared network state. This has been a deterrent in making the state available and has been previously investigated from the perspective of conflict detection or resource isolation. These inconsistencies can be caused by both unintentional as well as malicious means.